package cn.cloud9.designpattern.dp01singleton;

/**
 * @author OnCloud9
 * @description 静态内部类 解决立即加载和线程问题
 * @project Java
 * @date 2022年05月22日 10:01
 */
public class Singleton7 {

    private Singleton7(){
        // 如果不希望被反射获取，在构造器中可以被控制
        if (null != InnerClass.INSTANCE) {
            throw new RuntimeException("more instance denied!");
        }
    }

    // 静态内部类不会重复加载，其静态属性也如此
    private static final class InnerClass {
        private static final Singleton7 INSTANCE = new Singleton7();
    }

    // 返回内部类的属性实例即可
    public static Singleton7 getInstance(){
        return InnerClass.INSTANCE;
    }

}
